/*
 * UVa 1368
 * DNA 序列
 */
// 输入 m 个长度均为 n 的 DNA 序列，
// 求一个 DNA 序列，与所有序列的字符误差尽量小。
// 两个等长字符串的字符误差等于字符不同的位置个数，
// 例如，
// ACGT 和 GCGA 的字符误差为 2（左数第 1,4 个字符不同）。
//
// 输入：
// 整数 m 和 n（4 <= m <= 50, 4 <= n <= 1000），
// 以及 m 个长度为 n 的 DNA 序列，只包含字母 A,C,G,T，
// 输出：
// 到 m 个序列的字符误差和最小的 DNA 序列和对应的距离。
// 如有多解，要求为字典序最小的解。
/*
输入样例：
3
5 8
TATGATAC
TAAGCTAC
AAAGATCC
TGAGATAC
TAAGATGT
4 10
ACGTACGTAC
CCGTACGTAG
GCGTACGTAT
TCGTACGTAA
6 10
ATGTTACCAT
AAGTTACGAT
AACAAAGCAA
AAGTTACCTT
AAGTTACCAA
TACTTACCAA
输出样例：
TAAGATAC
7
ACGTACGTAA
6
AAGTTACCAA
12
*/

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#define LOCAL
using namespace std;
vector<string> DNA(50); // 至多 50 个 DNA 序列
int main()
{
#ifdef LOCAL
    ifstream cin("in.txt");
    ofstream cout("out.txt");
#endif
    int kase, m, n;
    cin >> kase;
    while (kase--)
    {
        // 输入
        cin >> m >> n;
        for (int i = 0; i < m; i++)
            cin >> DNA[i];
        string res;    // 解
        int error = 0; // 误差
        // 算法
        // 比较所有字符串的第 1,2,...,n 个字符（一列一列地比较），
        // 求同存异。
        // 即，留下出现最多的字符，记录差异 error。
        for (int col = 0; col < n; col++)
        {
            int occur[4] = {0}; // 核苷酸字符出现次数：0A 1C 2G 3T
            for (int row = 0; row < m; row++)
                switch (DNA[row][col])
                {
                case 'A':
                    ++occur[0];
                    break;
                case 'C':
                    ++occur[1];
                    break;
                case 'G':
                    ++occur[2];
                    break;
                case 'T':
                    ++occur[3];
                    break;
                default:
                    break;
                }
            int maxIndex = 0; // 最大值下标
            for (int i = 1; i < 4; ++i)
                if (occur[maxIndex] < occur[i])
                    maxIndex = i;
            // 存异
            error += occur[0] + occur[1] + occur[2] + occur[3];
            error -= occur[maxIndex];
            // 求同
            switch (maxIndex)
            {
            case 0:
                res.push_back('A');
                break;
            case 1:
                res.push_back('C');
                break;
            case 2:
                res.push_back('G');
                break;
            case 3:
                res.push_back('T');
                break;
            default:
                break;
            }
        }
        // 输出
        cout << res << '\n'
             << error << endl;
    }
    return 0;
}